Methods and systems for testing and applying codes to electronic shopping carts

ABSTRACT

Disclosed are methods, systems, and non-transitory computer-readable medium for testing and applying codes to electronic shopping carts. For instance, the method may include monitoring a shopping cart associated with an e-commerce website and with a user; in response to detecting a change to the shopping cart, testing codes with respect to a present content of the shopping cart to determine valid codes; selecting at least one of the valid codes; determining a status of the session; and performing an action based on the status and the at least one selected code. The testing the codes with respect to the present content of the shopping cart may include: cloning the shopping cart to form a cloned shopping cart in a shadow session; and/or obtaining the codes; and testing the codes on the cloned shopping cart in the shadow session to determine the valid codes.

TECHNICAL FIELD

Various embodiments of the present disclosure relate generally tomethods and systems for testing and applying codes to electronicshopping carts and, more particularly, to methods and systems fortesting codes before checking out and applying codes to electronicshopping carts.

BACKGROUND

Generally, customers (or a browser extension of a browser for thecustomers) apply coupon or promotional codes to test the codes one-commerce websites during a checkout process. However, applying thecodes to test the codes during the checkout process may cause delaysduring the checkout process. For instance, delays may be caused byrequiring the customer to be at an appropriate step in the checkoutprocess to test the codes, may require the customer to manually enterand remove codes one at a time in order to compare a potential value ofthe codes, and since the testing the codes may require a certain amountof time, the entire checkout process may be delayed by the certainamount of time.

The present disclosure is directed to overcoming one or more of theseabove-referenced challenges. The background description provided hereinis for the purpose of generally presenting the context of thedisclosure. Unless otherwise indicated herein, the materials describedin this section are not prior art to the claims in this application andare not admitted to be prior art, or suggestions of the prior art, byinclusion in this section.

SUMMARY

According to certain aspects of the disclosure, systems and methods aredisclosed for testing and applying codes to electronic shopping carts.

For instance, a method for testing and applying codes to electronicshopping carts may include monitoring a shopping cart associated with ane-commerce website and with a user, the shopping cart being associatedwith a session of the user; in response to detecting a change to theshopping cart, testing codes with respect to a present content of theshopping cart to determine valid codes, the codes being associated withthe e-commerce website; selecting at least one of the valid codes as atleast one selected code based on a result of the testing the codes;determining a status of the session; and performing an action based onthe status and the at least one selected code.

A system for testing and applying codes to electronic shopping carts mayinclude a memory storing instructions; and a processor executing theinstructions to perform a process. The process may include: determiningwhether a user is viewing an e-commerce website; in response todetermining that the user is viewing the e-commerce website, setting upcart listeners; using the cart listeners, monitoring a shopping cartassociated with the e-commerce website and with the user, the shoppingcart being associated with a session of the user; in response todetecting a change to the shopping cart, testing codes with respect to apresent content of the shopping cart to determine valid codes, the codesbeing associated with the e-commerce website; selecting at least one ofthe valid codes as at least one selected code based on a result of thetesting the codes; determining a status of the session; and performingan action based on the status and the at least one selected code.

A method for testing and applying codes to electronic shopping carts mayinclude monitoring a shopping cart associated with an e-commerce websiteand with a user, the shopping cart being associated with a session ofthe user; in response to detecting a change to the shopping cart,testing codes with respect to a present content of the shopping cart todetermine valid codes, the codes being associated with the e-commercewebsite, selecting at least one of the valid codes as at least oneselected code based on a result of the testing the codes; determining astatus of the session; and performing an action based on the status andthe at least one selected code. The testing the codes with respect tothe present content of the shopping cart may include: cloning theshopping cart to form a cloned shopping cart in a shadow session usingthe present content; obtaining the codes; and testing the codes on thecloned shopping cart in the shadow session to determine the valid codes.

Additional objects and advantages of the disclosed embodiments will beset forth in part in the description that follows, and in part will beapparent from the description, or may be learned by practice of thedisclosed embodiments.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory onlyand are not restrictive of the disclosed embodiments, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate various exemplary embodiments andtogether with the description, serve to explain the principles of thedisclosed embodiments.

FIG. 1 depicts an exemplary system for testing and applying codes toelectronic shopping carts, according to one or more embodiments.

FIG. 2 depicts a flowchart for testing and applying codes to electronicshopping carts, according to one or more embodiments.

FIG. 3 depicts a flowchart for testing and applying codes to electronicshopping carts, according to one or more embodiments.

FIG. 4 depicts a flowchart for testing and applying codes to electronicshopping carts, according to one or more embodiments.

FIGS. 5A-5C depict graphical user interfaces (GUIs) for testing andapplying codes to electronic shopping carts, according to one or moreembodiments.

FIG. 6 depicts an example system that may execute techniques presentedherein.

DETAILED DESCRIPTION OF EMBODIMENTS

Various embodiments of the present disclosure relate generally tomethods and systems for testing and applying codes to electronicshopping carts and, more particularly, to methods and systems fortesting codes before checking out and applying codes to electronicshopping carts.

The terminology used below may be interpreted in its broadest reasonablemanner, even though it is being used in conjunction with a detaileddescription of certain specific examples of the present disclosure.Indeed, certain terms may even be emphasized below; however, anyterminology intended to be interpreted in any restricted manner will beovertly and specifically defined as such in this Detailed Descriptionsection. Both the foregoing general description and the followingdetailed description are exemplary and explanatory only and are notrestrictive of the features, as claimed.

In this disclosure, the term “based on” means “based at least in parton.” The singular forms “a,” “an,” and “the” include plural referentsunless the context dictates otherwise. The term “exemplary” is used inthe sense of “example” rather than “ideal.” The term “or” is meant to beinclusive and means either, any, several, or all of the listed items.The terms “comprises,” “comprising,” “includes,” “including,” or othervariations thereof, are intended to cover a non-exclusive inclusion suchthat a process, method, or product that comprises a list of elementsdoes not necessarily include only those elements, but may include otherelements not expressly listed or inherent to such a process, method,article, or apparatus. Relative terms, such as, “substantially” and“generally,” are used to indicate a possible variation of ±10% of astated or understood value.

In general, the present disclosure is directed to methods and systemsfor testing codes before checking out and applying codes to electronicshopping carts. For instance, as discussed in more detail herein, asystem of the present disclosure may automatically apply selected couponcode(s) to a shopping cart as the user shops. The system of the presentdisclosure may apply the selected coupon code without displaying anywebpages or information to the user (e.g., in a headless manner). Thesystem of the present disclosure may detect when a user's shopping cartchanges, clone the user's shopping cart in a new session, and testcoupon codes against the cloned shopping cart in the new session to findvalid codes for the website and/or items in the cloned shopping cart.The system of the disclosure may also apply one or more of the validcodes to the user's shopping cart automatically in the background; andshow a savings summary of the codes applied and/or tested and which oneswere applied or should be applied. Therefore, the system of the presentdisclosure may allow for codes to be tested at a time an item is addedto cart, or in some cases even before. The system of the presentdisclosure may, by trying codes automatically as the user's shoppingcart changes before a user gets to checkout, allow for a faster checkoutexperience, and/or create an incentive to complete a purchase if savingsare available. Furthermore, the system of the present disclosure may, byusing the new session and the cloned shopping cart, also avoid conflictswith the user's shopping cart, thereby reducing issues for users.

FIG. 1 depicts an exemplary system 100 for testing and applying codes toelectronic shopping carts, according to one or more embodiments. Thesystem 100 may include one or more user device(s) 105, a network 110,one or more server(s) 115, and one or more e-commerce servers, such as,for example, e-commerce servers 120A and 120B. The user device 105, theserver 115, and the plurality of e-commerce servers 120A and 120B may beconnected via the network 110, using one or more standard communicationprotocols. The network 110 may be one or a combination of the internet,a local network, or other network. The user device 105 and the server115 may transmit and receive messages from each other across the network110.

The server 115 may include a display/UI 115A, a processor 115B, a memory115C, and/or a network interface 115D. The server 115 may be a computer,system of computers (e.g., rack server(s)), or a cloud service computersystem. The server 115 may execute, by the processor 115B, an operatingsystem (O/S) and at least one instance of a code management program(each stored in memory 115C). The code management program may provideinformation to and/or perform processing for one or more user devices,such as the user device 105, as discussed in more detail below. Thememory 115C may also store the code management program, e-commercewebsite information, and/or code information. The e-commerce websiteinformation may include information regarding e-commerce websites forwhich the code management program is capable of testing and applyingcodes for the user device 105. The code information may includeinformation for a plurality of codes (e.g., coupon or promotional codes)associated with one or more e-commerce websites hosted by one or more ofthe e-commerce servers 120A an 120B. The display/UI 115A may be a touchscreen or a display with other input systems (e.g., mouse, keyboard,etc.) for an operator of the server 115 to control the functions of theserver 115 (e.g., update the code management program, the e-commercewebsite information, and/or the code information). The network interface115D may be an TCP/IP network interface for, e.g., Ethernet or wirelesscommunications with the network 110.

The user device 105 may include a display/UI 105A, a processor 105B, amemory 105C, and/or a network interface 105D. The user device 105 may bea computer, a cell phone, a tablet, etc. The user device 105 mayexecute, by the processor 105B, an operating system (O/S) and at leastone application (each stored in memory 105C). The application may be abrowser program or a mobile application program (which may also be abrowser program in a mobile O/S). The application may generate one ormore graphic user interfaces (GUIs) based on instructions/informationstored in the memory 105C and/or instructions/information received fromthe server 115 and/or the plurality of e-commerce servers 120A and/or120B. The GUIs may, for instance, be webpages executed based on HTML,CSS, and/or scripts, such as JavaScript, but one skilled in the artwould recognize that this may be accomplished by other methods, such asXML and Android programming languages or Objective-C/Swift. Thedisplay/UI 105A may be a touch screen or a display with other inputsystems (e.g., mouse, keyboard, etc.). The network interface 105D may bean TCP/IP network interface for, e.g., Ethernet or wirelesscommunications with the network 110. The processor 105B, while executingthe application, may receive user inputs from the display/UI 105A, andperform actions or functions in accordance with the application.

The application (e.g., a browser program) may be a software applicationthat may be used by a user to access and interact with websites hostedby one or more of the plurality of e-commerce servers 120A and 120B overnetwork 110. In at least one embodiment, a user may view and interactwith the websites hosted by one or more of the plurality of e-commerceservers 120A and 120B via the application, for example, by clicking onlinks or graphical user elements to view items and to place items in anelectronic shopping cart. In other embodiments, any suitable app(software application) or other component may be used in place of theapplication.

In at least one embodiment, the application may include a browserextension (or plug-in) which performs certain functions, in accordancewith the system and methods described herein. For example, as describedin more detail below, in at least one embodiment, the browser extensionmay record requests made during interactions between the application andone or more of the plurality of e-commerce web servers 120A and 120B(and/or between the application and the server 115) and/or record userinputs on graphical user elements of GUIs. Alternatively, suchoperations may be performed by another component that need not be a partof the application. In at least one embodiment, the browser extension oranother software application may run in the background regardless ofwhether the application is running (e.g., a background application). Thebackground application may thereby see and record any relevantinteractions with websites hosted by the e-commerce web servers 120A and120B, regardless of which software is being used to perform theinteractions.

In at least one embodiment, the browser extension may include ananalysis tool. The analysis tool may be used to interpret and filter therecorded interactions or user inputs on graphical user elementsassociated with web pages hosted by the e-commerce web servers 120A and120B. The analysis tool may run on another device, such as the server115, or any other client device communicatively coupled to the server115.

In at least one embodiment, the browser extension may also include arequest identification program. The request identification program mayreview recorded requests or user inputs on graphical user elementsassociated the with web pages, and identify those that are necessary tocomplete process flows. The request identification program may run onanother device, such as the server 115 or any other client devicecommunicatively coupled to the server 115.

In at least one embodiment, the browser extension may also include anautomated site navigation program. The automated site navigation programmay automatically extract information from various websites (such asthose hosted by the e-commerce web servers 120A and 120B) without theneed for rendering on a display, such as the display/UI 105A. Theautomated site navigation program may also automatically transmitrequests to, receive responses from, and process the responses of thee-commerce servers 120A and 120B, as discussed in more detail below. Inat least one embodiment, the automated site navigation program mayoperate using information generated by the analysis tool and the requestidentification program, based on recorded interactions with web pageshosted by the e-commerce web servers 120A and 120B. In at least oneembodiment, the automated site navigation program may function on theuser device 105; alternatively, the automated site navigation programmay be implemented on a separate device, such as the server 115. In atleast one embodiment, the automated site navigation program operateswithout any need for human interaction.

The browser extension may also include a code testing and applyingprogram. The code testing and applying program may, while a user isnavigating an e-commerce website, test codes to determine whether anycodes are valid codes which may be used with respect to a givencomposition or content of a shopping cart. A shopping cart may be aserver/browser hosted software-based mechanism to select goods (tangibleor intangible) and/or services for eventual purchase/rental through ane-commerce website hosted by an e-commerce server. The shopping cart mayinclude checkout queues, baskets, wish lists, etc. The composition ofthe shopping cart may be based on a current shopping cart of the user,or it may be based on a likely future shopping cart of the user (e.g., auser has viewed a type of product, a specific product, etc., and islikely to add the product to the shopping cart). Specifically, thebrowser extension may perform a code testing process, in accordance withthe code testing and applying program, to determine valid codes for ane-commerce website.

The browser extension may determine whether a user is viewing ane-commerce website hosted by one of the plurality of e-commerce servers120A and 120B. For instance, the browser extension may determine theuser navigated to a website included in the e-commerce website by, e.g.,monitoring network requests sent by the user device 105 and/or analyzinga uniform resource locator (URL) of a currently accessed webpage (e.g.,displayed or loaded in a tab of a browser). The browser extension maydetermine the user is viewing the website by one or more of: determiningthe user has accessed a webpage of a website included in the e-commercewebsite information; determining the user is viewing the accessedwebpage based on a currently displayed GUI; and/or determining the userdevice 105 has transmitted network requests and/or received user inputson graphical user elements associated with the website. For instance,network requests and/or URLs may be searched for text strings that matchone or more e-commerce websites (included in the e-commerce websiteinformation) hosted by the one or more e-commerce servers 120A and 120B.As one example, the matching may be performed by regular expressionprocessing on each network request and/or URL transmitted/accessed bythe user device 105. The e-commerce website information may be obtainedby the browser extension from the server 115. The server 115 may updatethe e-commerce website information periodically or in response tochanges in the information of e-commerce website information. The server115 may transmit the updates to the e-commerce website information tothe user device 105 for the browser extension.

The browser extension may, in response to determining that the user isviewing the e-commerce website, set up cart listeners. For instance, thecart listeners (which may include checkout listeners) may be eventmonitoring programs that may detect changes to a shopping cart of ane-commerce website and/or detect when a checkout process starts/hasstarted. The cart listeners/checkout listeners may be custom for eache-commerce website or may be the same for each e-commerce website. Thecart listeners/checkout listeners may be obtained from the server 115and/or generated based on information in the e-commerce websiteinformation, such as specific network requests, responses, etc. for aspecific e-commerce website.

The browser extension may, using the cart listeners, monitor a shoppingcart associated with the e-commerce website and with the user and/or,using the checkout listeners, monitor a checkout process of e-commercewebsite. The shopping cart may be associated with a session of the user.

The cart listeners may monitor network requests and/or responses, andanalyze the network requests and responses to determine whether itemswere added, deleted, and/or modified in a user's shopping cart; thecheckout listeners may analyze the network requests and responses todetermine whether a checkout process has started. Additionally oralternatively, the cart listeners may monitor user inputs and analyzethe user inputs for user inputs on graphical user elements (e.g., HTMLelements, DOM elements, etc.) that may add, delete, and/or change anitem in a user's shopping cart; the checkout listeners may analyze theuser inputs for user inputs on the graphical user elements to determinewhether a checkout process has started. For instance, the networkrequests, responses, and/or the user inputs on graphical user elementsmay be identified based on information from the request identificationprogram or analysis tool, discussed above, or from information includedin the e-commerce website information. Specifically, the information mayinclude a plurality of expressions included in network requests and/orresponses that indicate an add, delete, or modify item action for theuser's shopping cart for the e-commerce website (or to start a checkoutprocess); the information may also include a plurality of user inputs ongraphical user elements that indicate an add, delete, or modify itemaction for the user's shopping cart for the e-commerce website (or tostart a checkout process).

Additionally or alternately, the cart listeners may, periodically, inresponse to a user input on a graphical user element and/or a usernavigating to a different URL (e.g., by a network request), transmit arequest to a cart API or transmit a request for a cart HTML page of thee-commerce website hosted by the e-commerce server 120A or 120B. Thebrowser extension may include, in the request to the cart API or for thecart HTML page, information indicating the session of the user. Inresponse, the browser extension may receive information from the cartAPI or for the cart HTML page, and determine whether the user's shoppingcart has been updated to add, delete, or modify an item. For instance,the cart listeners may invoke the automated site navigation program toperform this process, with or without being displayed to the user.

Alternatively, the browser extension may have set up the cart listenersalready or set up the cart listeners after the user has added one ormore items to the user's shopping cart. For instance, the browserextension may dynamically determine when to set up the cart listenersbased on statistical analysis of previous user interactions withe-commerce website(s).

The browser extension may, in response to a trigger condition occurring,such as detecting a change to the shopping cart, perform the codetesting process. The code testing process may test codes with respect toa present content of the shopping cart to determine the valid codes.Generally, a trigger condition may be when an item is added, deleted, ormodified in a user's shopping cart, as indicated by the cart listeners.Additionally or alternatively, the trigger condition may be anexpiration of a timer or may be based on a request from the server 115to perform the code testing process (e.g., if one or more codes haveexpired or one or more new codes are available). The cart listeners mayreport the trigger condition to the browser extension. The browserextension may initiate (or start) the code testing process in responseto the trigger condition occurring.

The codes may be associated with the e-commerce website. For instance,the code information may be obtained by the browser extension from theserver 115. The code information may include codes from a third party(e.g., a service that aggregates codes for e-commerce websites), codesscraped from the internet, codes that have been successfully used byusers of the browser extension and/or the server 115 (e.g., crowdsourced codes), and/or personal codes of the user. The server 115 maycollect the codes and provide the code information to the browserextension. For instance, the server 115 and/or the browser extension mayaccess a user's e-mail account, find e-mails from e-commerce websitesthat include personal codes (e.g., single-use codes, special codes,codes only usable by the user, etc.), extract the personal codes fromthe e-mails from e-commerce websites, and (by the browser extension) usethe personal codes in the code testing process.

The code testing process may obtain data for the user's shopping cart;determine the present content of the shopping cart based on the data;determine whether the present content has been tested before; and, inresponse to determining the present content has been tested before,retrieve the valid codes from a memory, such as the memory 105C. Forinstance, the browser extension may store results of previous carttesting for a predetermined period of time in the memory 105C, and thebrowser extension may retrieve the stored results.

In one aspect of the disclosure, the browser extension, beforeretrieving the valid codes, may determine whether a cart expirationtimer has expired. In response to determining that the cart expirationtimer has not expired, the browser extension may then retrieve the validcodes from the memory, such as the memory 105C. In response todetermining that the cart expiration timer has expired, the browserextension may proceed, as discussed below, as if the present content hasnot been tested before. In this manner, the browser extension may doublecheck that the codes are still valid, as codes may have stopped beingvalid, or the codes may have changed to provide different savings orother transaction details.

To obtain the data for the user's shopping cart, the browser extensionmay transmit a request to a cart API or transmit a request for a cartHTML page of the e-commerce website hosted by the e-commerce server 120Aor 120B. In response, the browser extension may receive information fromthe cart API or for the cart HTML page, and determine the presentcontent of user's shopping cart. For instance, the browser extension mayinvoke the automated site navigation program to perform this process,with or without being displayed to the user.

To determine the present content of the shopping cart based on the data,the browser extension may identify items in the user's shopping cart,collect item data, quantity, and identifiers of items (collectively,present cart configuration information), based on the receivedinformation from the cart API or for the cart HTML page. For instance,the browser extension may invoke the automated site navigation programto perform this process, with or without being displayed to the user.The browser extension (or the automated site navigation program) mayparse marked up data and/or formatted data of the received informationfrom the cart API or for the cart HTML page to extract the presentcontent of the user's shopping cart as the present cart configurationinformation.

To determine whether the present content has been tested before, thebrowser extension may search previously tested shopping cartconfigurations, and determine if any of the previously tested shoppingcart configurations match the present cart configuration information.The previously tested shopping cart configurations may be stored on thememory 105C or on the server 115 and, if stored on the server 115, thebrowser extension may transmit a request to the server 115 to determineif the present content of the user's shopping cart has been testedbefore. The previously tested shopping cart configurations may be storedin a data structure with a format to enable matching of items, itemdata, quantity, and/or identifiers of items of the present cartconfiguration information and/or the e-commerce website associated withthe user's shopping cart. The previously tested shopping cartconfigurations may also include one or more of: an identifier of thetested shopping cart, valid codes associated with the tested shoppingcart, a date and/or time of testing, and/or an expiration time or timerfor the tested shopping cart. To retrieve the valid codes from thememory, the browser extension may retrieve the valid codes associatedwith the tested shopping cart that matches the present cartconfiguration information from the previously tested shopping cartconfigurations.

In this manner, the browser extension may exit the code testing processearly and return the valid codes to apply to the user's shopping cart.For instance, this may reduce overall processing time, networkrequests/responses being transmitted, and/or processing load of the userdevice 105/server 115.

The browser extension may clone the user's shopping cart to form acloned shopping cart in a shadow session using the present content. Forinstance, the browser extension may clone the user's shopping cart toform the cloned shopping cart in the shadow session using the presentcontent, in response to: (1) determining the present content has notbeen tested before (or the expiration timer has expired), and/or (2) newcode events. The browser extension may determine the new code eventsbased on (1) messages from the server 115 indicating the availability ofnew codes associated with the e-commerce website, (2) user inputs to theuser device 105 indicating the availability of new codes associated withthe e-commerce website, and/or (3) the browser extension retrieving newpersonal codes from e-mails associated with the e-commerce website inthe user's e-mail account. Therefore, the code testing may be performed,even if the cart has not changed or expired.

The browser extension may then test the codes on the cloned shoppingcart in the shadow session to determine the valid codes. A shadowsession may be a session distinct and separate from the sessionassociated with the user, between the browser extension and thee-commerce server 120A or 120B that hosts the e-commerce website. Theshadow session may be processed in a background of the application suchthat a user may not see associated webpages, graphics, or information.The browser extension may invoke the automated site navigation programto perform the process to test the codes on the cloned shopping cart inthe shadow session. To clone the user's shopping cart as a clonedshopping cart, the browser extension may add, delete, or modify items ofanother shopping cart in the shadow session so that the another shoppingcart (e.g., the cloned shopping cart) corresponds to the present contentof the user's shopping cart.

To test the codes on the cloned shopping cart in the shadow session, thebrowser extension (or the automated site navigation program inaccordance with instructions from the browser extension) may: determinewhether at least one code of the codes has been tested; in response todetermining that at least one code of the codes has not been tested,select one or more codes of the at least one code that has not beentested; and apply the one or more codes (separately, in combination, inseries, or any combination thereof) to the cloned shopping cart in theshadow session to determine whether the one or more codes are validcodes.

To apply a code to the cloned shopping cart in the shadow session todetermine whether the code is a valid code, the browser extension may:transmit to the e-commerce website a request to apply the code to thecloned shopping cart in the shadow session; receive a response from thee-commerce website; and process the response from the e-commerce websiteto determine whether the code is a valid code. One of skill in the artwould recognize that the code may not be necessarily limited to onecode, but instead may be a combination of codes (e.g., a first code thatmay provide a discount and a second code that may provide freeshipping).

To transmit the request, the browser extension may generate the requestin accordance with information from the request identification programor the analysis tool and/or from the e-commerce website information. Forinstance, the request may be specifically formatted in accordance withan API call of a cart API of the e-commerce website or may be aspecifically formatted HTTP request. The browser extension may thentransmit the generated request to the e-commerce server 120A or 120Bassociated with the e-commerce website.

To process the response from the e-commerce website to determine whetherthe code is a valid code, the browser extension may parse marked up dataand/or formatted data of the response, in accordance with informationfrom the request identification program or the analysis tool and/or fromthe e-commerce website information. For instance, the response may bespecifically formatted in accordance with an API response of the cartAPI, the response may be text in HTML/CSS format, or the response may bein a data structure, such as JSON. In any of these cases, the responsemay be parsed according to the information from the requestidentification program or the analysis tool and/or from the e-commercewebsite information. The browser extension may then extract transactiondata from the parsed marked up data and/or formatted data of theresponse, and determine transaction results based on the extractedtransaction data. To extract transaction data, the browser extension mayfind and extract phrases of text and/or elements of the parsed marked updata and/or formatted data, based on predetermined structures of themarked up data and/or formatted data.

For instance, the information from the request identification program orthe analysis tool and/or from the e-commerce website information mayindicate that an HTML/CSS response may include a section in a body in atable format with an indicator confirming successful code application,previous cost, current cost, taxes (if any), shipping, warranties,availability, expected shipping/arrival date, etc. (transactiondetails). Likewise, an API response may include a formatted datastructure that indicates the same types of transaction details.

To determine the transaction results based on the extracted transactiondata, the browser extension may compare a prior state to a current stateof the cloned shopping cart (e.g., before and after the code was appliedto the cloned shopping cart). The browser extension may compare theprior state to the current state by comparing the transaction details,and determining if there are any differences between the transactionsdetails. As an example, the prior state may have higher cost than thecurrent state, if the code applies a discount coupon to the clonedshopping cart. In this manner, the browser extension may determinewhether the code effects any change to the state of the cloned shoppingcart. Generally, the code may be considered a valid code if the codecauses a change to the state of the cloned shopping cart; however, thebrowser extension may also only consider codes that benefit the user inone or more ways as valid codes. Based on the comparison, the browserextension may generate the transaction results to indicate whether thecode is a valid code. Furthermore, when the transaction results indicatethat the code is the valid code, the browser extension may include inthe transaction results further information regarding discounts,shipping information, and/or other transaction details.

Additionally or alternatively, the browser extension may transmit arequest to delete the code from the cloned shopping cart. For instance,this may make testing a next code easier (e.g., faster) or may reduce alikelihood of accidently holding a reserved use of the code frominterfering with the user's ability to use the code. The browserextension may then proceed to store the applied-code results in amemory, such as the memory 105C. The applied-code results may includethe transaction results, the transaction details, and information forthe present content of the cloned shopping cart. The stored applied-coderesult may be used to form the previously tested shopping cartconfigurations discussed above.

The browser extension may generate a result of the testing the codes.For instance, the browser extension may generate the result of thetesting the codes, in response to (1) testing all of the codesassociated with the e-commerce website (or one, two, or some integernumber less than all of the codes that are available for the e-commercewebsite) on the cloned shopping cart in the shadow session, (2)determining a threshold number of codes have been tested, and/or (3)determining a subset of all the codes have been tested. The thresholdnumber of codes may be set to reduce processing load and/or duplicativeresults. The subset of codes may be selected according to meta-dataand/or description data associated with codes (e.g., expected discounts,expected shipping benefits, and/or transaction benefits) to select codesfor the subset of codes that have potential greater user benefit. Forinstance, the browser extension may select a first code to be tested inthe sub-set of codes that has a higher discount than a second code (withor without taking into account other restrictions/conditions/limitationson the use of either the first code or the second code). Therefore, thebrowser extension may test codes that may have a greater potential userbenefit, and avoid testing remaining codes unless one or more of thesubset of codes are not valid codes. In this manner, the browserextension may reduce processing load and/or network requests to performthe testing of codes.

The result of testing the codes may include none, one, or a plurality ofvalid codes, along with information associated with the valid codes. Theinformation associated with the valid codes may include an identifierand/or a summary of transaction details for each valid code. Theidentifier may be a text string corresponding to the valid code, such asa text string to be entered to obtain the discount, free shipping, etc.The summary of transaction details may be a text-string that correspondsto the transaction details, such as an amount of savings (e.g., indollars and/or percentages), free shipping, warranty, expectedavailability, or whether the valid code is a personal valid codeassociated with the user, etc.

The browser extension may select at least one of the valid codes as atleast one selected code based on a result of the testing the codes. Forinstance, the browser extension may perform a selection algorithm toselect the at least one selected code, or display a summary of the validcodes to the user and receive a user input selecting the at least oneselected code (such as depicted in FIG. 5C below). The selectionalgorithm may select a valid code that is a personal valid codeassociated with the user, a valid code that has a greatest savings, avalid code with a fastest estimated shipping, etc., or a combinationthereof of benefits for the user. To display the summary of the validcodes to the user, the browser extension may organize or rank the validcodes and/or a summary of transaction details associated with the validcodes, and display the organized or ranked valid codes and/or thesummary of transaction details. For instance, the browser extension mayorganize or rank the valid codes and/or the summary of transactiondetails from greatest perceived user benefit (e.g., greatest costsavings) to lowest perceived user benefit (e.g., least amount of costsavings). One of skill in the art would recognize that the valid codemay not be necessarily limited to one code, but instead may be acombination of valid codes that combine to provide multiple benefits tothe user, such as a first code that generates a discount on cost andsecond code that generates free shipping for the product.

The browser extension may determine a status of the session. Forinstance, the browser extension may determine whether the user hasstarted a checkout process of the e-commerce website and/or whether thesession is inactive. To determine whether the user has started thecheckout process, the browser extension may monitor network requests todetermine if a request for the checkout process was transmitted or thebrowser extension may monitor user inputs on graphical user elementsassociated with the checkout process to determine whether the graphicaluser elements were selected. Alternatively or additionally, the browserextension may determine whether the user is currently viewing a checkoutpage of the e-commerce website.

The browser extension may perform an action based on the status and theat least one selected code. For instance, the browser extension may, inresponse to determining that the user has not started the checkoutprocess of the e-commerce website, display a summary of the valid codesto the user, and/or apply the selected code and display a summary of theapplied selected code. For instance, as discussed below with respect toFIGS. 5A-5C, the browser extension may display a summary of availablevalid codes to the user, so that user may select one or more valid codesto be applied. To apply the selected code, the browser extension mayfirst transmit a request to remove any codes already applied to theuser's shopping cart. The browser extension may then transmit a requestto apply the selected code to the user's shopping cart.

The browser extension may, in response to determining that the user hasstarted the checkout process of the e-commerce website, display a menuto the user to apply the at least one selected code and/or display asummary of the valid codes to the user so that the user may select whichvalid code(s) to apply. Moreover, the browser extension may also displaya reload button. The reload button may be selectable by a user input tocause the checkout process of the e-commerce website to reload and applythe at least one selected code.

In another aspect of the disclosure, the cart listeners may also monitorwhich webpages are being viewed by a user and determine a triggercondition based on specific user actions. The specific user actions maybe making selections to view different configurations of a product,viewing a webpage for a threshold period of time, viewingreviews/comments of the product, etc. In this case, the browserextension may determine a likelihood of a user to add, delete, or modifyan item to the user's shopping cart (e.g., a future shopping cart of theuser), based on the specific user actions. If the determined likelihoodof the user adding, deleting, or modifying an item, is above athreshold, then the browser extension may add, delete, or modify theitem in the cloned shopping cart in the shadow session (modified clonedshopping cart), and perform the code testing process on the modifiedcloned shopping cart. The browser extension may then display a summary(discussed below with respect to FIG. 5A-5C) indicating that the productcurrently being viewed has valid codes available and/or the potentialsavings.

Therefore, the system of the present disclosure may allow for codes tobe tested at the time an item is added to cart, or in some cases evenbefore. The system of the present disclosure may, by trying codesautomatically as the user's shopping cart changes before a user gets tocheckout, allow for a faster checkout experience and/or create anincentive to complete a purchase if savings are available. Furthermore,the system of the present disclosure may, by using the new session andthe cloned shopping cart, also avoids conflicts with the user's shoppingcart, thereby reducing issues for users.

FIG. 2 depicts a flowchart 200 for testing and applying codes toelectronic shopping carts, according to one or more embodiments. Theflowchart 200 may be performed by the user device 105, discussed above,by executing the application. The user device 105 may start the processof the flowchart 200 by starting the browser extension (block 205). Thebrowser extension may then proceed to determine whether a user of theuser device 105 is viewing a website (block 210).

In response to determining that the user is not viewing the website(block 210: No), the browser extension may proceed to wait until theuser is viewing the website (block 210). In response to determining thatthe user is viewing the website (block 210: Yes), the browser extensionmay proceed to start cart listeners (block 215).

The browser extension may then proceed to determine whether a triggercondition occurs (block 220). For instance, the cart listeners maynotify the browser extension when a trigger condition occurs, asdiscussed above with respect to FIG. 1.

In response to determining that a trigger condition does not occur(block 220: No), the browser extension may proceed to wait until atrigger condition occurs (block 220). In response to determining that atrigger condition does occur (block 220: Yes), the browser extension mayproceed to perform a code testing process (block 225). The browserextension may perform the code testing process in accordance with FIGS.3 and 4, described below. The code testing process may return a resultof the code testing process.

The browser extension may then proceed to determine whether there is atleast one valid code (block 230). For instance, the browser extensionmay analyze the result of the code testing process, as discussed abovewith respect to FIG. 1, to determine if there are any valid codes.

In response to determining that there is not at least one valid code(block 230: No), the browser extension may, optionally, proceed todisplay an error message (block 250). The browser extension may thenproceed to wait until a trigger condition occurs (block 220). Inresponse to determining that there is at least one valid code (block230: Yes), the browser extension may proceed to select at least onevalid code as selected codes (block 235). For instance, the browserextension may select the at least one valid code as selected codes, asdiscussed above with respect to FIG. 1.

The browser extension may then proceed to determine a status of asession of the user (block 240). For instance, the browser extension maydetermine whether the user has started the checkout process, asdiscussed above with respect to FIG. 1.

The browser extension may then proceed to perform an action based on thestatus and the selected codes (block 245). For instance, the browserextension may display various summaries or menus to the user, based onthe status and valid codes (if any), as discussed above with respect toFIG. 1. The browser extension may then proceed to wait until a triggercondition occurs (block 220).

FIG. 3 depicts a flowchart 300 for testing and applying codes toelectronic shopping carts, according to one or more embodiments. Theflowchart 300 may be performed by the browser extension, discussedabove, to perform the code testing process (e.g., block 225 of FIG. 2).The browser extension may start the process of the flowchart 300 byobtaining data for a user's shopping cart (block 305). The browserextension may then proceed to determine whether the user's shopping carthas been tested before (block 310). For instance, the browser extensionmay search the previously tested shopping cart configurations, asdiscussed above with respect to FIG. 1, to determine whether the user'sshopping car has been tested before.

In response to determining that the user's shopping cart has not beentested before (block 310: No), the browser extension may proceed toclone the user's shopping cart to a cloned shopping cart (block 315).For instance, the browser extension may clone the user's shopping cartto the another shopping cart in the shadow session, as discussed abovewith respect to FIG. 1.

The browser extension may then proceed to obtain codes (block 320). Forinstance, the browser extension may obtain the code information from theserver 115, as discussed above with respect to FIG. 1.

The browser extension may then proceed to test codes on the clonedshopping cart (block 325). The browser extension may perform the codetesting process on the cloned shopping cart in accordance with FIG. 4,described below. The code testing process on the cloned shopping cartmay return a result of code testing process on the cloned shopping cart.

The browser extension may then proceed to return, if any, valid codes(block 330). For instance, the browser extension may analyze the resultof the code testing process on the cloned shopping cart, as discussedabove with respect to FIG. 1, to determine if there are any valid codesto return and, if so, return the valid codes.

In response to determining that the user's shopping cart has been testedbefore (block 310: Yes), the browser extension may proceed to determinewhether a cart expiration timer has expired (block 335). In response todetermining that the cart expiration timer has expired (block 335: Yes),the browser extension may proceed to clone the user's shopping cart to acloned shopping cart (block 315).

In response to determining that the cart expiration timer has notexpired (block 335: No), the browser extension may proceed to retrieve,if any, valid codes from a memory (block 340). For instance, the browserextension may store results of previous cart testing for a predeterminedperiod of time in the memory, and the browser extension may retrieve thestored results if the cart expiration timer has not expired. The browserextension may then proceed to return, if any, valid codes (block 330).

FIG. 4 depicts a flowchart 400 for testing and applying codes toelectronic shopping carts, according to one or more embodiments. Theflowchart 400 may be performed by the browser extension, discussedabove, to perform the code testing process on the cloned shopping cart(e.g., block 325 of FIG. 3). The browser extension may start the processof the flowchart 400 by obtaining codes to be tested and the clonedshopping cart (block 405). The browser extension may then proceed todetermine whether at least one code of the codes has not been tested(block 410).

In response to determining that all of the codes have been tested (block410: No), the browser extension may proceed to return the results of thecode testing process (block 445).

In response to determining that at least one code has not been tested(block 410: Yes), the browser extension may proceed to select a codefrom the not tested codes (block 415). For instance, the browserextension may perform the selection algorithm to select the at least oneselected code, or display the summary of the valid codes to the user, asdiscussed above with respect to FIG. 1.

The browser extension may then proceed to transmit, to an e-commercewebsite associated with the cloned shopping cart, a request to apply theselected code to the cloned shopping cart (block 420). For instance, thebrowser extension may generate the request and transmit the generatedrequest, as discussed above with respect to FIG. 1. The browserextension may then proceed to receive a response from the e-commercewebsite (block 425).

The browser extension may then proceed to process the response to obtainapplied-code results (block 430). For instance, the browser extensionmay process the response, as discussed above with respect to FIG. 1.

The browser extension may then proceed to transmit a request, to thee-commerce website, to delete the code from the cloned shopping cart(block 435). For instance, the browser extension may transmit therequest to delete the code, as discussed above with respect to FIG. 1.The browser extension may then proceed to store the applied-code resultsin a memory (block 440). For instance, the browser extension may storethe applied-code results, as discussed above with respect to FIG. 1.

The browser extension may then proceed to return to determine whether atleast one code has not been tested (block 410). In this manner, eachcode of the codes may be tested with respect to the cloned shoppingcart. One skilled in the art may recognize that the flowchart 400 may beperformed in parallel for each code of the codes or in various differentmodes and sequences based on resources and network constraints. Forinstance, the code testing process may be performed by distributedcomputing by having the server 115 and/or other user devices perform thecode testing process for the cloned shopping cart using duplicatedcloned shopping carts and shadow sessions so as test multiple codes at asame time; alternatively the user device 105 may generate multipleshadow sessions and cloned shopping carts so as test multiple codes at asame time. Additionally or alternatively, not all of the codes may betested due to, e.g., time constraints, and the codes that are selectedto be tested may be selected in accordance with a code testing selectionalgorithm. For instance, the code testing selection algorithm may selectcodes that have a highest likelihood to return valid (e.g., based on thecodes successfully being used), and/or in order of potential benefits(e.g., largest savings, etc.).

FIGS. 5A-5C depict graphical user interfaces (GUIs) 500A-500C fortesting and applying codes to electronic shopping carts, according toone or more embodiments. GUI 500A may depict a webpage 502 of ane-commerce website hosted by one of the plurality of e-commerce servers120A and 120B. The e-commerce website 502 may be identified by a uniformresource locator (URL) 504. The webpage 502 may be for a product 506(e.g., a shoe, etc.) offered for sale, lease, loan, etc. with variousoptions 508, such as color 508A, size 508B, and/or quantity 508C. Oneskilled in the art would recognize that the various options 508 would bespecific to the type of product being offered for sale, lease, loan,etc. The various options may be selectable by a user input to adjust theproduct 506, so the user may view different configurations of theproduct and/or availability, etc. The webpage 502 may also have an addto shopping cart element 510. The add to shopping cart element 510 maybe selectable by a user input to add a currently configured product to auser's shopping cart. The webpage 502 may display a status 512 of auser's shopping cart. As displayed in the GUI 500A of FIG. 5A, thestatus 512 of the user's shopping cart indicates that the user has noitems in the user's shopping cart.

The browser extension, discussed above, may determine that the user iscurrently viewing the webpage 502, as discussed in FIG. 1. The browserextension may have set up the cart listeners already; may set up thecart listeners in response to determining that the user is currentlyviewing the webpage 502; or may set up the cart listeners after the userhas added one or more items to the user's shopping cart. For instance,the browser extension may dynamically determine when to set up the cartlisteners based on statistical analysis of previous user interactionswith e-commerce website(s).

GUI 500B may depict the webpage 502 after a user has added an item tothe user's shopping cart, by e.g., selecting the add to shopping cartelement 510 by a user input. As depicted in the GUI 500B of FIG. 5B, thewebpage 502 may display an updated status 512A. As discussed above, thecart listeners may have detected the change to the user's shopping cartby, e.g., listening to a request sent from the user device 105 to one ofthe e-commerce servers 120A and 120B or listening to the user input onthe add to shopping cart element 510.

The browser extension may perform the code testing, as discussed abovewith respect to FIG. 1 and/or FIGS. 2-4 to determine valid codes (ifany) for the product added to the user's shopping cart. GUI 500C maydepict the webpage 502 after the browser extension has performed thecode testing process. As discussed above, the browser extension maydisplay a menu and/or summary on the webpage 502, based on a status ofthe session of the user. As depicted in the GUI 500C of FIG. 5C, thebrowser extension may display a summary 514. The summary 514 may bedisplayed as a menu, a pop-up, a notification, etc. As depicted in theGUI 500C of FIG. 5C, the summary 514 may be a pop-up with a close icon522 and setting link element 520. The close icon may be selectable by auser input to close the summary 514. The setting link element 520 mayselectable by a user input to go a settings menu/webpage of the browserextension.

The summary 514 may display zero, one, or a plurality of valid codes516, based on the code testing process performed by the browserextension. For instance, as displayed in the GUI 500C of FIG. 5C, thesummary 514 may display three valid codes, including a first valid code516A, a second valid code 516B, a third valid code 516C. The browserextension may select the displayed valid codes according to a valid codedisplay selection algorithm. For instance, the valid code displayselection algorithm may select valid codes with greatest savings,fastest shipping, free shipping, included free warranties, and/or othertransaction details, such as expected availability, and whether thevalid code is a personal valid code associated with the user, etc.(collectively, transaction details).

Furthermore, the summary 514 may include a link (not depicted) to morevalid codes, for instance if a number of valid codes exceeds a thresholdnumber of valid codes. The threshold number of valid codes (1) may beset by the browser extension, (2) may be set by a user input, and/or (3)may be determined based on, e.g., display format of the webpage 502and/or the display/UI 105A of the user device 105.

The valid codes 516 may display an identifier 516A-1 to 516C-1 and/or asummary of results 516A-2 to 516C-2 for each valid code. The identifier516A-1 to 516C-1 may be a text string corresponding to the valid code,such as a text string to be entered to obtain the discount, freeshipping, etc. The summary of results 516A-2 to 516C-2 may be atext-string that corresponds to the transaction details, such as anamount of savings (e.g., in dollars and/or percentages), free shipping,warranty, expected availability, whether the valid code is a personalvalid code associated with the user, etc.

The summary 514 may also display an apply code element 518. The applycode element 518 may be selectable by a user input to apply a defaultvalid code to the user's shopping cart. The default valid code may be afirst valid code listed in the summary 514, a valid code that is apersonal valid code associated with the user, a valid code that has agreatest savings, a valid code with a fastest estimated shipping, etc.Additionally or alternatively, the apply code element 518 may apply acode selected by a user by, e.g., selecting one of the displayed validcodes and then selecting the apply code element 518.

Alternatively or additionally, the browser extension may automaticallyapply the default valid code to the user's shopping cart. The browserextension may also display, in the summary 514 instead of the validcodes 516, an identifier and summary for the default valid code that wasapplied and/or an indication of a number codes tested and/or a number ofvalid codes.

FIG. 6 depicts an example system that may execute techniques presentedherein. FIG. 6 is a simplified functional block diagram of a computerthat may be configured to execute techniques described herein, accordingto exemplary embodiments of the present disclosure. Specifically, thecomputer (or “platform” as it may not a be a single physical computerinfrastructure) may include a data communication interface 660 forpacket data communication. The platform may also include a centralprocessing unit (“CPU”) 620, in the form of one or more processors, forexecuting program instructions. The platform may include an internalcommunication bus 610, and the platform may also include a programstorage and/or a data storage for various data files to be processedand/or communicated by the platform such as ROM 630 and RAM 640,although the system 600 may receive programming and data via networkcommunications. The system 600 also may include input and output ports650 to connect with input and output devices such as keyboards, mice,touchscreens, monitors, displays, etc. Of course, the various systemfunctions may be implemented in a distributed fashion on a number ofsimilar platforms, to distribute the processing load. Alternatively, thesystems may be implemented by appropriate programming of one computerhardware platform.

The general discussion of this disclosure provides a brief, generaldescription of a suitable computing environment in which the presentdisclosure may be implemented. In one embodiment, any of the disclosedsystems, methods, and/or graphical user interfaces may be executed by orimplemented by a computing system consistent with or similar to thatdepicted and/or explained in this disclosure. Although not required,aspects of the present disclosure are described in the context ofcomputer-executable instructions, such as routines executed by a dataprocessing device, e.g., a server computer, wireless device, and/orpersonal computer. Those skilled in the relevant art will appreciatethat aspects of the present disclosure can be practiced with othercommunications, data processing, or computer system configurations,including: Internet appliances, hand-held devices (including personaldigital assistants (“PDAs”)), wearable computers, all manner of cellularor mobile phones (including Voice over IP (“VoIP”) phones), dumbterminals, media players, gaming devices, virtual reality devices,multi-processor systems, microprocessor-based or programmable consumerelectronics, set-top boxes, network PCs, mini-computers, mainframecomputers, and the like. Indeed, the terms “computer,” “server,” and thelike, are generally used interchangeably herein, and refer to any of theabove devices and systems, as well as any data processor.

Aspects of the present disclosure may be embodied in a special purposecomputer and/or data processor that is specifically programmed,configured, and/or constructed to perform one or more of thecomputer-executable instructions explained in detail herein. Whileaspects of the present disclosure, such as certain functions, aredescribed as being performed exclusively on a single device, the presentdisclosure may also be practiced in distributed environments wherefunctions or modules are shared among disparate processing devices,which are linked through a communications network, such as a Local AreaNetwork (“LAN”), Wide Area Network (“WAN”), and/or the Internet.Similarly, techniques presented herein as involving multiple devices maybe implemented in a single device. In a distributed computingenvironment, program modules may be located in both local and/or remotememory storage devices.

Aspects of the present disclosure may be stored and/or distributed onnon-transitory computer-readable media, including magnetically oroptically readable computer discs, hard-wired or preprogrammed chips(e.g., EEPROM semiconductor chips), nanotechnology memory, biologicalmemory, or other data storage media. Alternatively, computer implementedinstructions, data structures, screen displays, and other data underaspects of the present disclosure may be distributed over the Internetand/or over other networks (including wireless networks), on apropagated signal on a propagation medium (e.g., an electromagneticwave(s), a sound wave, etc.) over a period of time, and/or they may beprovided on any analog or digital network (packet switched, circuitswitched, or other scheme).

Program aspects of the technology may be thought of as “products” or“articles of manufacture” typically in the form of executable codeand/or associated data that is carried on or embodied in a type ofmachine-readable medium. “Storage” type media include any or all of thetangible memory of the computers, processors or the like, or associatedmodules thereof, such as various semiconductor memories, tape drives,disk drives and the like, which may provide non-transitory storage atany time for the software programming. All or portions of the softwaremay at times be communicated through the Internet or various othertelecommunication networks. Such communications, for example, may enableloading of the software from one computer or processor into another, forexample, from a management server or host computer of the mobilecommunication network into the computer platform of a server and/or froma server to the mobile device. Thus, another type of media that may bearthe software elements includes optical, electrical and electromagneticwaves, such as used across physical interfaces between local devices,through wired and optical landline networks and over various air-links.The physical elements that carry such waves, such as wired or wirelesslinks, optical links, or the like, also may be considered as mediabearing the software. As used herein, unless restricted tonon-transitory, tangible “storage” media, terms such as computer ormachine “readable medium” refer to any medium that participates inproviding instructions to a processor for execution.

Other embodiments of the disclosure will be apparent to those skilled inthe art from consideration of the specification and practice of theinvention disclosed herein. It is intended that the specification andexamples be considered as exemplary only, with a true scope and spiritof the invention being indicated by the following claims.

1.-20. (canceled)
 21. A computer-implemented method for testing andapplying codes to electronic shopping carts using a browser extension ofa browser, the computer-implemented method comprising: monitoring ashopping cart associated with an e-commerce website and with a user, theshopping cart being associated with a session of the user; in responseto detecting a change to the shopping cart, testing codes with respectto a present content of the shopping cart to determine valid codes by:cloning the shopping cart to form a cloned shopping cart in a shadowsession, the shadow session being a distinct and separate session fromthe session of the user and being between the browser extension and thee-commerce website, the shadow session being processed in a backgroundof the browser, cloning the shopping cart including adding, deleting, ormodifying items of the cloned shopping cart in the shadow session tocorrespond to the present content of the shopping cart; obtaining thecodes, the codes being associated with the e-commerce website; andtesting the codes on the cloned shopping cart in the shadow session todetermine the valid codes; selecting at least one of the valid codes asat least one selected code based on a result of the testing the codes;determining a status of the session; and performing an action based onthe status and the at least one selected code.
 22. Thecomputer-implemented method of claim 21, wherein testing the codes onthe cloned shopping cart in the shadow session to determine the validcodes includes: obtaining data for the shopping cart; determining thepresent content of the shopping cart based on the data; determiningwhether the present content has been tested before; and in response todetermining the present content has been tested before, retrieving thevalid codes from a memory.
 23. The computer-implemented method of claim21, wherein selecting the at least one of the valid codes as the atleast one selected code based on the result of the testing the codesincludes: performing a selection algorithm to select the at least oneselected code.
 24. The computer-implemented method of claim 21, whereintesting the codes on the cloned shopping cart in the shadow session todetermine the valid codes includes: determining whether at least onecode of the codes has not been tested; in response to determining thatthe at least one code of the codes has not been tested, selecting a codeof the at least one code that has not been tested; and applying the codeto the cloned shopping cart in the shadow session to determine whetherthe code is a valid code.
 25. The computer-implemented method of claim24, wherein applying the code to the cloned shopping cart in the shadowsession to determine whether the code is the valid code includes:transmitting a request to apply the code to the cloned shopping cart inthe shadow session to the e-commerce website; receiving a response fromthe e-commerce website; and processing the response from the e-commercewebsite to determine whether the code is the valid code.
 26. Thecomputer-implemented method of claim 25, wherein processing the responsefrom the e-commerce website to determine whether the code is the validcode includes: parsing marked-up data and/or formatted data of theresponse; extracting transaction data from the marked-up data and/or theformatted data; and determining transaction results based on thetransaction data, the transaction results including informationindicating whether the code is the valid code.
 27. Thecomputer-implemented method of claim 26, wherein when the informationindicates the code is the valid code, the transaction results furtherinclude one or more of additional information regarding discounts,shipping information, or other transaction details.
 28. Thecomputer-implemented method of claim 21, wherein selecting the at leastone of the valid codes as the at least one selected code based on theresult of the testing the codes includes: displaying a summary of thevalid codes to the user and receiving a user input selecting the atleast one selected code.
 29. The computer-implemented method of claim21, wherein determining the status of the session includes determiningwhether the user has started a checkout process of the e-commercewebsite; and performing the action based on the status and the at leastone selected code includes: in response to determining that the user hasnot started the checkout process of the e-commerce website, displaying asummary of the valid codes to the user, or in response to determiningthat the user has started the checkout process of the e-commercewebsite, displaying a menu to the user to apply the at least oneselected code.
 30. The computer-implemented method of claim 29, whereindisplaying the menu to the user to apply the at least one selected codeincludes: displaying a reload button in the menu; and in response toreceiving a user input associated with the reload button, causing thecheckout process of the e-commerce website to reload and apply the atleast one selected code.
 31. A system for testing and applying codes toelectronic shopping carts using a browser extension of a browser, thesystem comprising: a memory storing instructions; and a processorexecuting the instructions to perform a process including: determiningwhether a user is viewing an e-commerce website; in response todetermining that the user is viewing the e-commerce website, setting upcart listeners; using the cart listeners, monitoring a shopping cartassociated with the e- commerce website and with the user, the shoppingcart being associated with a session of the user; in response todetecting a change to the shopping cart, testing codes with respect to apresent content of the shopping cart to determine valid codes by:cloning the shopping cart to form a cloned shopping cart in a shadowsession, the shadow session being a distinct and separate session fromthe session of the user and being between the browser extension and thee-commerce website, the shadow session being processed in a backgroundof the browser, cloning the shopping cart including adding, deleting, ormodifying items of the cloned shopping cart in the shadow session tocorrespond to the present content of the shopping cart; obtaining thecodes, the codes being associated with the e- commerce website; andtesting the codes on the cloned shopping cart in the shadow session todetermine the valid codes; selecting at least one of the valid codes asat least one selected code based on a result of the testing the codes;determining a status of the session; and performing an action based onthe status and the at least one selected code.
 32. The system of claim31, wherein testing the codes on the cloned shopping cart in the shadowsession to determine the valid codes includes: obtaining data for theshopping cart; determining the present content of the shopping cartbased on the data; determining whether the present content has beentested before; and in response to determining the present content hasbeen tested before, retrieving the valid codes from the memory.
 33. Thesystem of claim 32, wherein selecting the at least one of the validcodes as the at least one selected code based on the result of thetesting the codes includes: performing a selection algorithm to selectthe at least one selected code.
 34. The system of claim 31, whereintesting the codes on the cloned shopping cart in the shadow session todetermine the valid codes includes: determining whether at least onecode of the codes has not been tested; in response to determining thatthe at least one code of the codes has not been tested, selecting a codeof the at least one code that has not been tested; and applying the codeto the cloned shopping cart in the shadow session to determine whetherthe code is a valid code.
 35. The system of claim 34, wherein applyingthe code to the cloned shopping cart in the shadow session to determinewhether the code is the valid code includes: transmitting a request toapply the code to the cloned shopping cart in the shadow session to thee-commerce website; receiving a response from the e-commerce website;and processing the response from the e-commerce website to determinewhether the code is the valid code.
 36. The system of claim 35, whereinprocessing the response from the e-commerce website to determine whetherthe code is the valid code includes: parsing marked-up data and/orformatted data of the response; extracting transaction data from themarked-up data and/or the formatted data; and determining transactionresults based on the transaction data, the transaction results includinginformation indicating whether the code is the valid code.
 37. Thesystem of claim 31, wherein selecting the at least one of the validcodes as the at least one selected code based on the result of thetesting the codes includes: displaying a summary of the valid codes tothe user and receiving a user input selecting the at least one selectedcode.
 38. The system of claim 31, wherein determining the status of thesession includes determining whether the user has started a checkoutprocess of the e-commerce website; and performing the action based onthe status and the at least one selected code includes: in response todetermining that the user has not started the checkout process of thee-commerce website, displaying a summary of the valid codes to the user,or in response to determining that the user has started the checkoutprocess of the e-commerce website, displaying a menu to the user toapply the at least one selected code.
 39. The system of claim 38,wherein displaying the menu to the user to apply the at least oneselected code includes: displaying a reload button in the menu; and inresponse to receiving a user input associated with the reload button,causing the checkout process of the e-commerce website to reload andapply the at least one selected code.
 40. A method for testing andapplying codes to electronic shopping carts using a browser extension ofa browser, the method comprising: monitoring a shopping cart associatedwith an e-commerce website and with a user, the shopping cart beingassociated with a session of the user; in response to detecting a changeto the shopping cart, testing codes with respect to a present content ofthe shopping cart to determine valid codes, the codes being associatedwith the e-commerce website, wherein the testing the codes with respectto the present content of the shopping cart includes: cloning theshopping cart to form a cloned shopping cart in a shadow session, theshadow session being a distinct and separate session from the session ofthe user and being between the browser extension and the e-commercewebsite, the shadow session being processed in a background of thebrowser, cloning the shopping cart including adding, deleting, ormodifying items of the cloned shopping cart in the shadow session tocorrespond to the present content of the shopping cart; obtaining thecodes; and testing the codes on the cloned shopping cart in the shadowsession to determine the valid codes; selecting at least one of thevalid codes as at least one selected code based on a result of thetesting the codes; determining a status of the session; and performingan action based on the status and the at least one selected code.